WebAssembly ์ฐธ์กฐ ํ์ ์ ํ์ํ๊ณ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ฐธ์กฐ์ ์ด์ ์ ๋ง์ถฐ, ๋ธ๋ผ์ฐ์ ๋ฑ์์ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ํ ์์ ํ๊ณ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ฅ์ ๊ณผ ์ค์ ์ ์ฉ ์ฌ๋ก๋ฅผ ์์๋ณด์ธ์.
WebAssembly ์ฐธ์กฐ ํ์ : ๊ฐ๋น์ง ์ปฌ๋ ์ ์ฐธ์กฐ โ ์ฌ์ธต ๋ถ์
WebAssembly(Wasm)๋ ์น ๊ฐ๋ฐ๊ณผ ํฌ๋ก์ค ํ๋ซํผ ์ํํธ์จ์ด์ ๋ํ ์ฐ๋ฆฌ์ ์๊ฐ์ ํ์ ์ ์ผ๋ก ๋ฐ๊พธ์์ต๋๋ค. ์ด๋ ์น ๋ธ๋ผ์ฐ์ ๋ฐ ๊ธฐํ ํ๊ฒฝ์์ ์คํ๋ ์ ์๋ ์ ์์ค ๋ฐ์ดํธ์ฝ๋ ํ์์ ์ ๊ณตํ์ฌ, ๊ฐ๋ฐ์๋ค์ด ๋ค์ํ ์ธ์ด(C, C++, Rust ๋ฑ)๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์น์์ ํจ์จ์ ์ผ๋ก ์คํํ ์ ์๊ฒ ํฉ๋๋ค. WebAssembly์ ๊ฐ์ฅ ์ค์ํ ๋ฐ์ ์ค ํ๋๋ ์ฐธ์กฐ ํ์ (Reference Types)์ ๋์ ์ด๋ฉฐ, ๊ทธ ์์๋ ๊ฐ๋น์ง ์ปฌ๋ ์ (GC) ์ฐธ์กฐ๋ผ๋ ์ค์ํ ์ธก๋ฉด์ด ์์ต๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์๋ WebAssembly์ GC ์ฐธ์กฐ, ๊ทธ ์๋ฏธ, ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๊ฒฝ์ ์ด๋ป๊ฒ ๋ณํ์ํค๊ณ ์๋์ง์ ๋ํด ์์ธํ ์์๋ด ๋๋ค.
๊ธฐ๋ณธ ์ฌํญ ์ดํดํ๊ธฐ: WebAssembly์ ์ฐธ์กฐ ํ์
GC ์ฐธ์กฐ์ ๋ํด ์์๋ณด๊ธฐ ์ ์ WebAssembly์ ์ฐธ์กฐ ํ์ ์ ๊ธฐ๋ณธ ์ฌํญ์ ๊ฐ๋ตํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
WebAssembly๋ ๋ฌด์์ธ๊ฐ?
WebAssembly๋ ์น์ ์ํด ์ค๊ณ๋ ๋ฐ์ด๋๋ฆฌ ๋ช ๋ น์ด ํ์์ด์ง๋ง, ๊ทธ ์์ฉ ๋ถ์ผ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ํจ์ฌ ๋ฐ์ด๋์ต๋๋ค. ์ด๋ ๋ค์ํ ํ๊ฒฝ์์ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ์ด์์ฑ ๋๊ณ , ํจ์จ์ ์ด๋ฉฐ, ์์ ํ ๋ฐฉ๋ฒ์ ๋๋ค. WebAssembly ๋ชจ๋์ ์๊ณ ๋น ๋ฅด๊ฒ ๋ก๋๋๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฝ๋๋ ๋ค์ดํฐ๋ธ์ ๊ฐ๊น์ด ์๋๋ก ์คํ๋๋ฏ๋ก, ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์์ JavaScript์ ๊ฐ๋ ฅํ ๋์์ด ๋ฉ๋๋ค. WebAssembly๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ์ฑ๋ฅ: Wasm ์ฝ๋๋ ์ผ๋ฐ์ ์ผ๋ก JavaScript๋ณด๋ค ๋น ๋ฅด๊ฒ ์คํ๋๋ฉฐ, ํนํ ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ณ์ฐ์์ ๊ทธ๋ ์ต๋๋ค.
- ์ด์์ฑ: Wasm์ Wasm ๋ฐํ์์ด ์๋ ๋ชจ๋ ํ๊ฒฝ์์ ์คํํ ์ ์์ต๋๋ค.
- ๋ณด์: Wasm์ ์ฝ๋๋ฅผ ํธ์คํธ ์์คํ ์ผ๋ก๋ถํฐ ๊ฒฉ๋ฆฌํ๋ ์๋๋ฐ์ค ์คํ ๋ชจ๋ธ์ ๊ฐ์ง๊ณ ์์ด ๋ณด์์ ํฅ์์ํต๋๋ค.
- ์ธ์ด ๋ ๋ฆฝ์ฑ: Wasm์ ๋ค์ํ ์ธ์ด๋ฅผ ์ง์ํ๋ฏ๋ก ๊ฐ๋ฐ์๋ ๊ฐ์ฅ ํธํ ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฐธ์กฐ ํ์ : ๊ฐ๋ตํ ๊ฐ์
์ฐธ์กฐ ํ์ ์ด์ ์๋ WebAssembly๊ฐ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ํ์ ์ผ๋ก ์ง์ํ์ต๋๋ค. ์ฐธ์กฐ ํ์ ์ ์ฌ์ฉํ๋ฉด WebAssembly ๋ชจ๋์ด ๊ฐ์ฒด ๋ฐ ๊ธฐํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ง์ ์กฐ์ํ๊ณ ๊ณต์ ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ฐธ์กฐ๋ Wasm ๋ชจ๋ ๋ด, ํธ์คํธ ํ๊ฒฝ(์: JavaScript) ๋ด ๋๋ ์ด ๋์ ์กฐํฉ์ผ๋ก ํ ๋น๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์์ต๋๋ค. ์ด๋ JavaScript์์ ์ํธ ์ด์ฉ์ฑ์ ํฅ์์ํค๊ณ ๋ ์ ๊ตํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํ ํ์์ ์ธ ๊ตฌ์ฑ ์์์ ๋๋ค.
WebAssembly์์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ฐธ์กฐ์ ์ค์์ฑ
๊ฐ๋น์ง ์ปฌ๋ ์ ์ฐธ์กฐ๋ ์ฐธ์กฐ ํ์ ์ ์ค์ํ ๋ถ๋ถ์ ๋๋ค. ์ด๋ฅผ ํตํด WebAssembly ๋ชจ๋์ ๊ด๋ฆฌ๋๋ ๋ฉ๋ชจ๋ฆฌ ํ๊ฒฝ๊ณผ ํจ์จ์ ์ผ๋ก ์ํธ ์์ฉํ ์ ์์ต๋๋ค. ์ด๋ Java, Go, C#๊ณผ ๊ฐ์ด ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ฌ์ฉํ๋ ์ธ์ด ๋๋ JavaScript ์์ง์ด ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ฒ๋ฆฌํ๋ JavaScript๋ก ์ปดํ์ผ๋๋ ์ธ์ด(์: TypeScript)์ ํตํฉํ ๋ ํนํ ์ ์ฉํฉ๋๋ค. ์ด๊ฒ์ด ํ์์ ์ธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ: ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ํด์ ๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐ ๊ธฐํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ จ ์ค๋ฅ์ ์ํ์ ์ค์ ๋๋ค.
- ๊ฐ๋ฐ ๋จ์ํ: ๊ฐ๋ฐ์๊ฐ ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ ํ์๊ฐ ์์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค๊ฐ ๋จ์ํ๋๊ณ ๋ฒ๊ทธ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ญ๋๋ค.
- ์ธ์ด ์ํธ ์ด์ฉ์ฑ: GC ์ฐธ์กฐ๋ WebAssembly ๋ชจ๋๊ณผ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์์กดํ๋ ์ธ์ด ๊ฐ์ ์ํํ ํตํฉ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ์ฑ๋ฅ ํฅ์(์ผ๋ถ ๊ฒฝ์ฐ): ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ ์ ์์ง๋ง, ๋ฉ๋ชจ๋ฆฌ ๋จํธํ๋ฅผ ๋ฐฉ์งํ๊ณ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ํ์ฉ์ ๋ณด์ฅํจ์ผ๋ก์จ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฐ๋น์ง ์ปฌ๋ ์ ์ฐธ์กฐ์ ์๋ ๋ฐฉ์
GC ์ฐธ์กฐ์ ํต์ฌ ๊ฐ๋ ์ WebAssembly ๋ชจ๋์ด ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์ํด ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๋ฅ๋ ฅ์ ๋๋ค. ์ด๋ ์ข ์ข ๋ ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํฉ๋๋ค:
- ๊ฐ๋น์ง ์ปฌ๋ ํฐ: ์ด ๊ตฌ์ฑ ์์๋ ์ฌ์ฉ ์ค์ธ ๊ฐ์ฒด๋ฅผ ์ถ์ ํ๊ณ ๋ ์ด์ ํ์ํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋ ์ญํ ์ ํฉ๋๋ค.
- WebAssembly ๋ชจ๋: ๋ชจ๋์ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ณด์ ํ๋ฉฐ, ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ WebAssembly ๋ชจ๋์ด ์ฐธ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋์ ํด๋น ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋จ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
๋ค์์ ํ๋ก์ธ์ค๋ฅผ ์ค๋ช ํ๋ ๊ฐ๋จํ ์์ ๋๋ค:
- Go์ ๊ฐ์ ์ธ์ด์์ ์ปดํ์ผ๋ WebAssembly ๋ชจ๋์ด ํธ์คํธ ํ๊ฒฝ(์: ์น ๋ธ๋ผ์ฐ์ )๊ณผ ์ํธ ์์ฉํฉ๋๋ค.
- Go ์ฝ๋๋ ํธ์คํธ์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ(์: JavaScript ์์ง์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ)๊ฐ ๊ด๋ฆฌํ๋ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ํ ๋นํฉ๋๋ค.
- WebAssembly ๋ชจ๋์ ์ด ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
- ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์คํ๋ ๋ WebAssembly ๋ชจ๋์ด ๋ณด์ ํ ๋ชจ๋ ์ฐธ์กฐ๋ฅผ ๊ฒ์ฌํ๊ณ ์ด๋ค ๊ฐ์ฒด๊ฐ ์ฌ์ ํ ๋๋ฌ ๊ฐ๋ฅํ์ง ๊ฒฐ์ ํฉ๋๋ค.
- ๊ฐ์ฒด๊ฐ WebAssembly ๋ชจ๋์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๋ถ๋ถ์์ ๋ ์ด์ ๋๋ฌํ ์ ์๊ฒ ๋๋ฉด, ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ํด๋น ๊ฐ์ฒด๊ฐ ์ฐจ์งํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํฉ๋๋ค.
์ค์ฉ์ ์ธ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
GC ์ฐธ์กฐ๊ฐ ๋น์ ๋ฐํ๋ ์ค์ ์๋๋ฆฌ์ค ๋ช ๊ฐ์ง๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
1. JavaScript์์ ํตํฉ
GC ์ฐธ์กฐ์ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก ์ค ํ๋๋ JavaScript์์ ์ํํ ํตํฉ์ ๋๋ค. Rust๋ก ์์ฑ๋์ด WebAssembly๋ก ์ปดํ์ผ๋ ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ์ด Rust ์ฝ๋๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. GC ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ ํ์ ์์ด Rust ๋ชจ๋๊ณผ JavaScript ๊ฐ์ ์ด๋ฌํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ ๋ฌํ ์ ์์ด ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.
์์: Rust๋ก ์์ฑ๋์ด Wasm์ผ๋ก ์ปดํ์ผ๋ ๋ฐ์ดํฐ ์๊ฐํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ JavaScript ๋ฐฐ์ด(๊ฐ๋น์ง ์ปฌ๋ ์ ๋์)์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ์ผ๋ก ๋ฐ์ ์ ์์ต๋๋ค. Rust ์ฝ๋๋ ์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ ์๊ฐ์ ํํ์ ์์ฑํ ๋ค์, ์น ํ์ด์ง์ ๋ ๋๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค. GC ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด Rust ์ฝ๋๊ฐ JavaScript ๋ฐฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ง์ ์กฐ์ํ์ฌ ๋ ํ๊ฒฝ ๊ฐ์ ๋ฐ์ดํฐ ๋ณต์ฌ ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
2. ๊ฒ์ ๊ฐ๋ฐ
๊ฒ์ ๊ฐ๋ฐ์ ์ข ์ข ์บ๋ฆญํฐ, ๋ ๋ฒจ, ํ ์ค์ฒ์ ๊ฐ์ ๋ณต์กํ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ํฌํจํฉ๋๋ค. GC ์ฐธ์กฐ๋ WebAssembly๋ก ๊ตฌ์ถ๋ ๊ฒ์ ์์ง์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๊ฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๊ฒ์์ด C++๋ก ์์ฑ๋์ด Wasm์ผ๋ก ์ปดํ์ผ๋๊ณ , ์คํฌ๋ฆฝํ ์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ธ์ด(์: Lua ๋๋ JavaScript)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, GC ์ฐธ์กฐ๋ฅผ ํตํด ์์ง์ด ๊ฒ์ ๊ฐ์ฒด๋ฅผ ์ฒ๋ฆฌํ๋ ๋์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๊ฐ ์ฌ์ฉ๋์ง ์๋ ๊ฒ์ ์์ฐ์ ์ ๋ฆฌํ ์ ์์ต๋๋ค.
์์: C++๋ก ์์ฑ๋ ๊ฒ์ ์์ง์ WebAssembly๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ ์ํฐํฐ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ฌํ ์ํฐํฐ์๋ JavaScript๋ก ์์ฑ๋ ์คํฌ๋ฆฝํธ๊ฐ ์์ ์ ์์ต๋๋ค. C++ ์ฝ๋๋ JavaScript ๊ฐ์ฒด(์: ๊ฒ์ ์ํฐํฐ)์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ณด์ ํ ์ ์์ผ๋ฉฐ, JavaScript ์์ง์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ๋ ์ด์ ํ์ํ์ง ์์ ๋ ์ด๋ฅผ ์ ๋ฆฌํฉ๋๋ค.
3. ๊ธ์ต ๋ชจ๋ธ๋ง
๊ธ์ต ๋ชจ๋ธ๋ง์ ์ข ์ข ๋ฐฉ๋ํ ๋ฐ์ดํฐ ์ธํธ์ ๋ํ ์๋ฎฌ๋ ์ด์ ๋ฐ ๊ณ์ฐ ์คํ์ ํฌํจํฉ๋๋ค. GC ์ฐธ์กฐ๊ฐ ํฌํจ๋ WebAssembly๋ ์ด๋ฌํ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ ์ ์์ต๋๋ค. C#์ผ๋ก ์์ฑ๋์ด Wasm์ผ๋ก ์ปดํ์ผ๋ ์ํ ๋ถ์ ์๊ณ ๋ฆฌ์ฆ์ JavaScript ์์ง์ด ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ง์ ์ํธ ์์ฉํ์ฌ ๋ ๋น ๋ฅธ ๊ณ์ฐ๊ณผ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์์: ๊ธ์ต ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํตํด ์ฌ์ฉ์๋ ๊ธ์ต ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ ์ ์์ต๋๋ค. ์ด ๋ฐ์ดํฐ๋ ์ฒ๋ฆฌ๋ฅผ ์ํด C# WebAssembly ๋ชจ๋๋ก ์ ๋ฌ๋ฉ๋๋ค. C# ์ฝ๋๋ GC ์ฐธ์กฐ์ ๋์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฝ๊ณ ์กฐ์ํ์ฌ ๊ธ์ต ์งํ๋ฅผ ๊ณ์ฐํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์๋ JavaScript ์์ง(์: ์คํ๋ ๋์ํธ)์ ์ํด ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ GC ์ฐธ์กฐ๋ ๋ฆฌ์์ค ๊ณต์ ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
4. ๋ฐ์ดํฐ ๊ณผํ ๋ฐ ๋จธ์ ๋ฌ๋
๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ฑ๋ฅ ํฅ์์ ์ํด WebAssembly์ ์ด์ ์ ๋๋ฆด ์ ์์ต๋๋ค. Python(WASM ํธํ ๋น๋๋ฅผ ํตํด) ๋๋ C++์ ๊ฐ์ ์ธ์ด๋ก ๊ตฌ์ถ๋ ๋ชจ๋ธ์ Wasm์ผ๋ก ์ปดํ์ผ๋๊ณ , GC ์ฐธ์กฐ๋ฅผ ํ์ฉํ์ฌ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๊ด๋ฆฌํ๊ฑฐ๋ ํธ์คํธ JavaScript ์ฝ๋์ ๋ฐ์ดํฐ์ ์ํธ ์์ฉํ ์ ์์ต๋๋ค.
์์: ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ด Python์ผ๋ก ๊ฐ๋ฐ๋๊ณ ์ ์ ํ ๋น๋ ์์คํ ์ ์ฌ์ฉํ์ฌ WebAssembly๋ก ์ปดํ์ผ๋ฉ๋๋ค. ์ด ๋ชจ๋ธ์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋ ์ ๋ ฅ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. GC ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ Wasm ๋ชจ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ ๊ณ์ฐ์ ์ํํ ํ, ๋ฐ์ดํฐ ์ค๋ณต ์์ด ๋ค์ดํฐ๋ธ ํ์์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
๊ฐ๋น์ง ์ปฌ๋ ์ ์ฐธ์กฐ ๊ตฌํํ๊ธฐ: ๊ธฐ์ ์ ์ธ๋ถ ์ฌํญ ์ดํด๋ณด๊ธฐ
GC ์ฐธ์กฐ๋ฅผ ๊ตฌํํ๋ ค๋ฉด ๊ธฐ๋ณธ ๋ฉ์ปค๋์ฆ์ ๋ํ ์ฝ๊ฐ์ ์ดํด๊ฐ ํ์ํฉ๋๋ค:
1. ์ธ์ด ์ง์
GC ์ฐธ์กฐ ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ๋ Wasm ๋ชจ๋์ ์ปดํ์ผํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ธ์ด๊ฐ ์ ๊ณตํ๋ ์ง์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. Rust(์ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ ์ฌ์ฉ ์), C++ ๋ฐ ๊ธฐํ ์ธ์ด๋ค์ ์ ์ ๋ GC ์ฐธ์กฐ ๊ธฐ๋ฅ์ ์ง์ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ๋ค์ํฉ๋๋ค.
์์: Rust์์๋ `wasm-bindgen` ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ JavaScript ๊ฐ์ฒด์ ํจ๊ป ์๋ํ๋ GC ์ฐธ์กฐ ์ฌ์ฉ์ ํฌํจํ์ฌ JavaScript ๋ฐ ๊ธฐํ ํธ์คํธ ํ๊ฒฝ์ ๋ํ ๋ฐ์ธ๋ฉ์ ์์ฑํ ์ ์์ต๋๋ค.
2. ํธ์คํธ ํ๊ฒฝ ํตํฉ
ํธ์คํธ ํ๊ฒฝ(์: ์น ๋ธ๋ผ์ฐ์ , Node.js)์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ ๊ด๋ฆฌ์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. WebAssembly ๋ชจ๋์ GC ์ฐธ์กฐ๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ถ์ ํ๊ณ ํ์ํ๊ธฐ ์ํด ํธ์คํธ์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ์์กดํฉ๋๋ค.
3. ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ ์ด์์
Wasm ๋ชจ๋๊ณผ ํธ์คํธ ํ๊ฒฝ ๋ด์์ ๋ฉ๋ชจ๋ฆฌ ๋ ์ด์์๊ณผ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐฉ์์ ๋ํด ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ๋ฐ์ดํฐ์ ํฌ์ธํฐ์ ์ ๋ ฌ์ WebAssembly์ ํธ์คํธ ํ๊ฒฝ ๊ฐ์ ์ํธ ์ด์ฉ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ์ด๋ ์ข ์ข ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ํน์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ฌ์ฉ์ ํฌํจํฉ๋๋ค.
4. ๋ณด์ ๊ณ ๋ ค ์ฌํญ
WebAssembly๋ ์๋๋ฐ์ค ์คํ ๋ชจ๋ธ์ ๊ฐ์ง๊ณ ์์ง๋ง, GC ์ฐธ์กฐ๋ก ์์ ํ ๋ ์ฌ์ ํ ๋ณด์ ๊ณ ๋ ค ์ฌํญ์ด ์์ต๋๋ค. ์ ์์ ์ธ ์ฝ๋๋ ์ ํจํ์ง ์์ ์ฐธ์กฐ๋ฅผ ๋ง๋ค๊ฑฐ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ฅผ ์กฐ์ํ๋ ค๊ณ ์๋ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ด๋ฌํ ์ ์ฌ์ ์ทจ์ฝ์ ์ ์ผ๋์ ๋๊ณ ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ๊ฒฝ๊ณ ๊ฒ์ฌ์ ๊ฐ์ ์ ์ ํ ๋ณด์ ์กฐ์น๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค.
WebAssembly์์ GC ์ฐธ์กฐ ์ฌ์ฉ์ ์ฅ์
WebAssembly์์ GC ์ฐธ์กฐ๋ฅผ ํ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ด์ ์ด ์์ต๋๋ค:
- ์ฑ๋ฅ ํฅ์: ํธ์คํธ ํ๊ฒฝ์ ๊ฐ๋น์ง ์ปฌ๋ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ง์ ์ก์ธ์คํ ์ ์๊ฒ ํจ์ผ๋ก์จ GC ์ฐธ์กฐ๋ ํนํ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ JavaScript ๊ฐ์ฒด์ ์ํธ ์์ฉํ ๋ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ๊ฐ๋ฐ ๋จ์ํ: GC๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ณต์ก์ฑ์ ์๋น ๋ถ๋ถ ์ ๊ฑฐํฉ๋๋ค.
- ํฅ์๋ ์ํธ ์ด์ฉ์ฑ: GC ์ฐธ์กฐ๋ฅผ ํตํด WebAssembly ๋ชจ๋์ ๋ค๋ฅธ ์ธ์ด ๋ฐ ํ๊ฒฝ๊ณผ ์ํํ๊ฒ ์ํธ ์์ฉํ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๋์ ๊ฐ์: ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ์ฌ์ฉ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ํ์ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋์ ์ํ์ ์ค์ ๋๋ค.
- ํฌ๋ก์ค ํ๋ซํผ ํธํ์ฑ: WebAssembly๋ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ๋ฅผ ํฌํจํ ๋ค์ํ ํ๋ซํผ์์ ์คํ๋ ์ ์์ด ์ฌ๋ฌ ํ๊ฒฝ์์ ์ผ๊ด๋ ๋์์ ์ ๊ณตํฉ๋๋ค.
๊ณผ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ
GC ์ฐธ์กฐ๋ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์ ์ ๊ณตํ์ง๋ง, ๊ณ ๋ คํด์ผ ํ ๋ช ๊ฐ์ง ๊ณผ์ ๋ ์์ต๋๋ค:
- ๊ฐ๋น์ง ์ปฌ๋ ์ ์ ์ค๋ฒํค๋: ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ ์ ์์ผ๋ฏ๋ก, ์ฑ๋ฅ ํฅ์์ด GC๋ก ์ธํ ์ค๋ฒํค๋๋ฅผ ์์ํ๋์ง ํ์ธํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์คํ๊ฒ ํ๋กํ์ผ๋งํด์ผ ํฉ๋๋ค. ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ ๊ธฐ๋ณธ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์ ๊ทธ ๊ตฌํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
- ๊ตฌํ์ ๋ณต์ก์ฑ: GC ์ฐธ์กฐ๋ฅผ ๊ตฌํํ๋ ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ธ๋ถ ์ฌํญ๊ณผ ๊ฐ๋น์ง ์ปฌ๋ ์ ๊ณผ ๊ด๋ จ๋ ์ ์ฌ์ ๋ฌธ์ ์ ๋ํ ์ดํด๊ฐ ํ์ํฉ๋๋ค.
- ๋๋ฒ๊น : GC ์ฐธ์กฐ๊ฐ ์๋ WebAssembly ์ฝ๋๋ฅผ ๋๋ฒ๊น ํ๋ ๊ฒ์ ํธ์คํธ ํ๊ฒฝ์ ๊ฐ๋น์ง ์ปฌ๋ ํฐ์์ ์ํธ ์์ฉ ๋๋ฌธ์ GC ์์ด ๋๋ฒ๊น ํ๋ ๊ฒ๋ณด๋ค ๋ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๋๋ฒ๊น ๋๊ตฌ์ ๊ธฐ์ ์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐ์ ํ๊ณ ์์ต๋๋ค.
- ์ธ์ด ์ง์ ์ ํ: ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ WebAssembly์์ GC ์ฐธ์กฐ๋ฅผ ์๋ฒฝํ๊ฒ ์ง์ํ๋ ๊ฒ์ ์๋๋๋ค. ๊ฐ๋ฐ์๋ ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํด์ฒด์ธ์ ์ฌ์ฉํด์ผ ํ ์ ์์ต๋๋ค.
- ๋ณด์ ์ํ: GC ์ฐธ์กฐ๋ฅผ ๋ถ์ ์ ํ๊ฒ ์ฒ๋ฆฌํ๋ฉด ๋ณด์ ์ทจ์ฝ์ ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ๋ณด์ ์ฝ๋ฉ ๊ดํ๊ณผ ๊ฐ์ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค.
๋ฏธ๋ ๋ํฅ ๋ฐ ๋ฐ์
WebAssembly ์ํ๊ณ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ, GC ์ฐธ์กฐ๋ ์ง์์ ์ธ ๊ฐ๋ฐ์ ํต์ฌ ์ด์ ์์ญ์ ๋๋ค:
- ์ธ์ด ์ง์ ์ฆ๊ฐ: ๋ ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ GC ์ฐธ์กฐ์ ๋ํ ์ง์์ด ํฅ์๋์ด ๊ฐ๋น์ง ์ปฌ๋ ์ ์ด ํฌํจ๋ Wasm ๋ชจ๋์ ๋ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
- ํฅ์๋ ๋๊ตฌ: ๊ฐ๋ฐ ๋๊ตฌ ๋ฐ ๋๋ฒ๊น ๋๊ตฌ๋ ๊ณ์ํด์ ์ฑ์ํ์ฌ GC ์ฐธ์กฐ๊ฐ ์๋ WebAssembly ๋ชจ๋์ ๋ ์ฝ๊ฒ ์์ฑํ๊ณ ๋๋ฒ๊น ํ ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
- ์ฑ๋ฅ ์ต์ ํ: ์ฐ๊ตฌ ๊ฐ๋ฐ์ WebAssembly์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ฑ๋ฅ์ ์ง์์ ์ผ๋ก ๊ฐ์ ํ์ฌ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ณ ๋ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ ๊ฒ์ ๋๋ค.
- Wasm ์ปดํฌ๋ํธ ๋ชจ๋ธ: Wasm ์ปดํฌ๋ํธ ๋ชจ๋ธ์ GC๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋์ ํฌํจํ์ฌ Wasm ๋ชจ๋ ๊ฐ์ ์ํธ ์ด์ฉ์ฑ์ ๋จ์ํํ๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์ปดํฌ๋ํธ๋ฅผ ๋ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ์ฝ์ํฉ๋๋ค.
- ํ์คํ: ๋ค์ํ Wasm ๊ตฌํ์์ ์ผ๊ด๋ ๋์๊ณผ ์ํธ ์ด์ฉ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ํ์คํ ๋ ธ๋ ฅ์ด ์งํ ์ค์ ๋๋ค.
GC ์ฐธ์กฐ ์์ ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
GC ์ฐธ์กฐ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค:
- ์ฝ๋ ํ๋กํ์ผ๋ง: GC ์ฐธ์กฐ๋ฅผ ๋์ ํ๊ธฐ ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ธก์ ํ์ฌ ๊ธ์ ์ ์ธ ๊ฒฐ๊ณผ๊ฐ ์๋์ง ํ์ธํ์ญ์์ค.
- ์ฌ๋ฐ๋ฅธ ์ธ์ด ์ ํ: GC ์ฐธ์กฐ์ ๋ํ ๊ฐ๋ ฅํ ์ง์์ ์ ๊ณตํ๊ณ ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ๊ณผ ์ผ์นํ๋ ์ธ์ด๋ฅผ ์ ํํ์ญ์์ค.
- ์ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ ์ฌ์ฉ: GC ์ฐธ์กฐ๋ฅผ ์ง์ํ๊ณ ํจ์จ์ ์ด๊ณ ์์ ํ WebAssembly ๋ชจ๋์ ๋ง๋๋ ๋ฐ ๋์์ด ๋๋๋ก ์ค๊ณ๋ ์ต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๊ตฌ๋ฅผ ํ์ฉํ์ญ์์ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ดํด: ์ผ๋ฐ์ ์ธ ํจ์ ์ ํผํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๊ฐ๋น์ง ์ปฌ๋ ์ ํ๋ก์ธ์ค๋ฅผ ์ฒ ์ ํ ์ดํดํ์ญ์์ค.
- ๋ณด์ ์กฐ์น ๊ตฌํ: ์ ์ฌ์ ์ธ ์ทจ์ฝ์ ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ์ ๊ฐ์ ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ตฌํํ์ญ์์ค.
- ์ต์ ์ ๋ณด ์ ์ง: WebAssembly ํ๊ฒฝ์ ๋์์์ด ๋ณํํฉ๋๋ค. ์ต์ ๊ฐ๋ฐ, ๋๊ตฌ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์ ์งํ์ญ์์ค.
- ์ฒ ์ ํ ํ ์คํธ: GC ์ฐธ์กฐ๊ฐ ์๋ Wasm ๋ชจ๋์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๊ณ ๋ฉ๋ชจ๋ฆฌ ๋์๋ ๊ธฐํ ๋ฌธ์ ๋ฅผ ์ผ์ผํค์ง ์๋์ง ํ์ธํ๊ธฐ ์ํด ํฌ๊ด์ ์ธ ํ ์คํธ๋ฅผ ์ํํ์ญ์์ค. ์ฌ๊ธฐ์๋ ๊ธฐ๋ฅ ํ ์คํธ์ ์ฑ๋ฅ ํ ์คํธ๊ฐ ๋ชจ๋ ํฌํจ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ต์ ํ: ๋ฐ์ดํฐ ๊ตํ์ ์ต์ ํํ๊ธฐ ์ํด Wasm ๋ชจ๋๊ณผ ํธ์คํธ ํ๊ฒฝ ๋ชจ๋์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์คํ๊ฒ ์ค๊ณํ์ญ์์ค. ์ฑ๋ฅ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ๋ง๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ํํ์ญ์์ค.
- ์ฅ๋จ์ ๊ณ ๋ ค: GC ์ฐธ์กฐ๋ฅผ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ ๋ ์ฑ๋ฅ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋, ์ฝ๋ ๋ณต์ก์ฑ ๊ฐ์ ์ฅ๋จ์ ์ ํ๊ฐํ์ญ์์ค. ํน์ ๊ฒฝ์ฐ์๋ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ์ฌ์ ํ ๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
WebAssembly์ ๊ฐ๋น์ง ์ปฌ๋ ์ ์ฐธ์กฐ๋ ์น ๊ฐ๋ฐ ๋ฐ ํฌ๋ก์ค ํ๋ซํผ ์ํํธ์จ์ด ์ธ๊ณ์์ ์ค์ํ ๋์ฝ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ํจ์จ์ ์ด๊ณ ์์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ํฅ์๋ ์ํธ ์ด์ฉ์ฑ ๋ฐ ๋จ์ํ๋ ๊ฐ๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ WebAssembly๋ฅผ ๋ ๋์ ๋ฒ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์คํ ๊ฐ๋ฅํ ์ ํ์ผ๋ก ๋ง๋ญ๋๋ค. ์ํ๊ณ๊ฐ ์ฑ์ํ๊ณ ๋๊ตฌ๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ GC ์ฐธ์กฐ์ ์ด์ ์ ๋์ฑ ๋ถ๋ช ํด์ง ๊ฒ์ด๋ฉฐ, ๊ฐ๋ฐ์๋ค์ด ์น๊ณผ ๊ทธ ๋๋จธ๋ฅผ ์ํ ๊ณ ์ฑ๋ฅ, ๋ณด์ ๋ฐ ์ด์ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ํ์ ์ค์ด์ค ๊ฒ์ ๋๋ค. ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํดํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ GC ์ฐธ์กฐ์ ํ์ ํ์ฉํ์ฌ ์๋ก์ด ๊ฐ๋ฅ์ฑ์ ์ด๊ณ ๋ฏธ๋๋ฅผ ์ํ ํ์ ์ ์ธ ์๋ฃจ์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
์๋ จ๋ ์น ๊ฐ๋ฐ์, ๊ฒ์ ๊ฐ๋ฐ์, ๋ฐ์ดํฐ ๊ณผํ์ ๋ฑ ๋๊ตฌ์๊ฒ๋ GC ์ฐธ์กฐ๊ฐ ํฌํจ๋ WebAssembly๋ฅผ ํ์ํ๋ ๊ฒ์ ๊ฐ์น ์๋ ์ผ์ ๋๋ค. ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ด๋ฉฐ ์์ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ ์ ์ฌ๋ ฅ์ ์ ๋ง ํฅ๋ฏธ์ง์งํฉ๋๋ค.